home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Collection of Tools & Utilities
/
Collection of Tools and Utilities.iso
/
dskut
/
hdsource.zip
/
HDMAIN.ASM
< prev
next >
Wrap
Assembly Source File
|
1986-04-24
|
33KB
|
928 lines
PAGE 64,132 ;PAGE WIDTH,LENGTH
.SALL
TITLE PC/AT DISK DIAGNOSTIC PROGRAM
; **********************************************************************
; * *
; * DECSRIPTION A MENU DRIVEN HARD DISK DIAGNOSTIC PROGRAM *
; * FOR HARD DISKS ON A IBM PC/AT. *
; * *
; * INPUTS MENU INPUT *
; * *
; * *
; * OUTPUTS CAN DESTROY DATA ON THE HARD DISK *
; * *
; * *
; **********************************************************************
;
PUBLIC HDMAIN
;
; **********************************************************************
; * PROGRAMS OR ROUTINES TO BE CALLED *
; **********************************************************************
EXTRN SCRMGR:NEAR ;SCREEN MANAGER
EXTRN HDRW:NEAR ;WRITE/READ/VERIFY TEST
EXTRN HDSEEK:NEAR ;SEEK TEST
EXTRN HDHS:NEAR ;HEAD SELECT TEST
EXTRN HDECC:NEAR ;ECC TEST
EXTRN HDALL:NEAR ;RUN ALL TESTS
EXTRN HDSURF:NEAR ;SURFACE ANALYSIS
EXTRN HDTFMT:NEAR ;FORMAT TRACK
EXTRN HDFMT:NEAR ;FORMAT DRIVE
EXTRN HDMSG:NEAR ;MSG DISPLAY AND PRINT
EXTRN PRT_MSG:NEAR
EXTRN D_ERROR:NEAR
EXTRN HDSHIP:NEAR ;LAND THE HEADS
EXTRN HDFSEC:NEAR ;FLAG A SECTOR
EXTRN HDSCAN:NEAR ;QUICK DEFECT SCAN
; **********************************************************************
; * PUBLIC SUBROUTINES *
; **********************************************************************
PUBLIC CONV_ASCII,BOX_IT,BEEP,TRANS_KEY,READ_PARMS
PUBLIC EXEC_CMD,DECODE_ERR,NEXT_SEC,NEXT_TRK
PUBLIC NEXT_CYL,CTLR_DIAG,HIDE_CUR,WRITE_CMSG
;
IF1
INCLUDE HD.MAC
INCLUDE \SCRMGR\SCRNWORK.MAC
ENDIF
; **********************************************************************
; * *
; * BEGIN *
; * *
; **********************************************************************
CSEG SEGMENT PARA PUBLIC 'CODE'
ORG 100H
ASSUME CS:CSEG
HDMAIN PROC NEAR
PUSH CS ;ESTABLISH
POP DS ; DATA
ASSUME DS:CSEG ; SEGMENT
LEA AX,STACK_SSE ;END OF THE STACK AREA
MOV BX,CS ;INITIALIZE
MOV SS,BX ; STACK
MOV SP,AX ; SEGMENT
JMP BY_INFO ;JMP AROUND COPYRIGHT
ID HDMAIN
; **********************************************************************
; * STACK WORK AREA *
; **********************************************************************
STACK_SS DB 512 DUP(0) ;STACK AREA
STACK_SSE EQU $ ;END OF THE STACK AREA
; **********************************************************************
; * EXTENDED KEY TABLE *
; **********************************************************************
EX_KEY LABEL BYTE
DB 132 DUP(0FFH)
ORG $-132
ORG EX_KEY+13
DB 00 ;ENTER KEY
ORG EX_KEY+27
DB 41 ;ESCAPE KEY
ORG EX_KEY+59
DB 01,02,03,04,05 ;FUNCTION KEYS 1 TO 5
DB 06,07,08,09,10 ;FUNCTION KEYS 6 TO 10
ORG EX_KEY+73
DB 43 ;PAGE UP
ORG EX_KEY+79
DB 42 ;END
ORG EX_KEY+81
DB 44 ;PAGE DOWN
ORG EX_KEY+84
DB 11,12,13,14,15 ;FUNCTION KEYS 11 TO 15 SHIFT
DB 16,17,18,19,20 ;FUNCTION KEYS 16 TO 20 SHIFT
ORG EX_KEY+94
DB 21,22,23,24,25 ;FUNCTION KEYS 21 TO 25 CTRL
DB 26,27,28,29,30 ;FUNCTION KEYS 26 TO 30 CTRL
ORG EX_KEY+104
DB 31,32,33,34,35 ;FUNCTION KEYS 31 TO 35 ALT
DB 36,37,38,39,40 ;FUNCTION KEYS 36 TO 40 ALT
DB 0FEH ;CONTROL BREAK
ORG EX_KEY+132
; **********************************************************************
; * PUBLIC FIELDS *
; **********************************************************************
PUBLIC MAX_HD,MAX_CYL,MAX_SEC,CUR_HD,CUR_CYL,CUR_SEC
PUBLIC DR,NUM_DR,ERR_CNT,FMT_BUFF,BROW,BCOL,BHEIGHT
PUBLIC BWIDTH,BATTR,BCHAR,INL_TBL,HD_CMD,NUM_SEC,ERR_CODE
PUBLIC DIAG_BUF,DATA_BUF,P_STAT,ALL_SW,BAD_SEC,FUNC
PUBLIC RW_X,HS_X,SEEK_X,ECC_X,PCT
; **********************************************************************
; * WORKAREAS *
; **********************************************************************
W16 DW 16
B16 DB 16
B10 DB 10
MAX_HD DB 0 ;MAX HEADS
MAX_CYL DW 0 ;MAX CYLINDERS
MAX_SEC DB 17 ;MAX SECTORS
CUR_HD DB 0 ;CURRENT HEAD
CUR_CYL DW 0 ;CURRENT CYLINDER
CUR_SEC DB 0 ;CURRENT SECTOR
B_CYL DW 0 ;LAST BAD SECTOR CYL
B_HD DB 0 ;LAST BAD SECTOR HEAD
NUM_SEC DB 0 ;NUMBER OF SECTORS
HD_CMD DB 0 ;HARD DISK COMMAND
DR DB 0 ;DRIVE NUMBER
ERR_CODE DB 0 ;SAVED ERROR CODE
FUNC DB 0 ;FUNC CODE
NUM_DR DB 0 ;NUMBER OF INSTALLED DRIVES
SNUM_DR DB 0 ;SAVED NUMBER OF INSTALLED DRIVES
ERR_CNT DW 0 ;ERROR COUNT
RW_X DB 0 ;READ/WRITE/VERIFY FLAG
HS_X DB 0 ;HEAD SELECT FLAG
SEEK_X DB 0 ;SEEK FLAG
ECC_X DB 0 ;ECC FLAG
PC_TYPE LABEL DWORD
DW 000EH,0FFFFH ;LOCATION OF PC TYPE
AT EQU 0FCH ;IBM AT
PCT DB 0 ;TYPE OF PC
DWORK DB 16 DUP(0) ;WORK AREA
CUR_DIAG DW 0 ;CURRENT DIAGNOSTIC
SAVE_SP DW 0 ;SAVED STACK POINTER
P_STAT DB 0FFH ;PRINTER STATUS
ALL_SW DB 00H ;RUN ALL TESTS SWITCH
BAD_SEC DW 0 ;BAD SECTOR COUNT
; **********************************************************************
; * BOX PARAMETERS *
; **********************************************************************
BROW DB 0 ;STARTING ROW
BCOL DB 0 ;STARTING COLUMN
BHEIGHT DB 0 ;HIGHT
BWIDTH DB 0 ;WIDTH
BATTR DB 0 ;ATTRIBUTE
BCHAR DB 0 ;CHARACTER TO WRITE
; **********************************************************************
; * INTERLEAVE TABLE *
; **********************************************************************
INL_TBL LABEL BYTE
INT_1 DB 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17
INT_2 DB 1,10,2,11,3,12,4,13,5,14,6,15,7,16,8,17,9
INT_3 DB 1,7,13,2,8,14,3,9,15,4,10,16,5,11,17,6,12
INT_4 DB 1,14,10,6,2,15,11,7,3,16,12,8,4,17,13,9,5
INT_5 DB 1,8,15,5,12,2,9,16,6,13,3,10,17,7,14,4,11
INT_6 DB 1,4,7,10,13,16,2,5,8,11,14,17,3,6,9,12,15
INT_7 DB 1,6,11,16,4,9,14,2,7,12,17,5,10,15,3,8,13
INT_8 DB 1,16,14,12,10,8,6,4,2,17,15,13,11,9,7,5,3
; **********************************************************************
; * *
; * MAIN SCREEN *
; * *
; **********************************************************************
SFIELD A00,A01,,@LABEL,RV,05,20,'TESTS THAT WILL NOT DESTROY USER DATA'
SFIELD A01,A02,,@LABEL,LO,07,24,'F1.......WRITE/READ/VERIFY TEST'
SFIELD A02,A03,,@LABEL,LO,08,24,'F2.......SEEK TEST'
SFIELD A03,A04,,@LABEL,LO,09,24,'F3.......HEAD SELECT TEST'
SFIELD A04,A05,,@LABEL,LO,10,24,'F4.......ECC TEST'
SFIELD A05,A06,,@LABEL,LO,11,24,'F5.......RUN ALL TESTS'
SFIELD A06,A07,,@LABEL,LO,12,24,'F6.......PREPARE FOR RELOCATION'
SFIELD A07,A08,,@LABEL,LO,13,24,'F7.......DEFECT SCAN'
SFIELD A08,A09,,@LABEL,RV,15,22,'TESTS THAT WILL DESTROY USER DATA'
SFIELD A09,A10,,@LABEL,LO,17,24,'F8.......SURFACE ANALYSIS'
SFIELD A10,A11,,@LABEL,LO,18,24,'F9.......FORMAT DISK'
SFIELD A11,A12,,@LABEL,LO,19,24,'F10......FLAG DEFECTS'
SFIELD A12,A13,,@LABEL,LO,20,24,'A-F1.....FORMAT TRACK'
SFIELD A13,A14,,@LABEL,LO,22,24,'A-F9.....TOGGLE PRINTER ON/OFF'
SFIELD A14,A00,,@LABEL,LO,23,24,'A-F10....EXIT'
;
SFIELD D00,D00,,@EX,LO,24,81,' ' ;DUMMY INPUT
;
SFIELD P00,P00,,@LABEL,RV,03,33,'PRINTER ON'
SFIELD P01,P01,,@LABEL,RV,03,33,'PRINTER OFF'
; **********************************************************************
; * ERROR CODE TABLE *
; ******************************************